Manipulate[DynamicModule[{θ1=0,θ2=0,howBig=200,blankGraph,paramSubst,zoomScale,polarGraphPaper},

zoomScale[factor_]=(factor^3);
blankGraph=ParametricPlot[{0,0},{t,0,0.1},AxesOrigin->{0,0},AspectRatio->1,ImageSize->howBig];
paramSubst={t->θ,T->θ,Th->θ,Theta->θ,A->paramA,B->paramB,C->paramC};

polarGraphPaper[radius_,rSteps_,angleSteps_]:=Graphics[{Table[{Lighter[Gray],Dashed,Line[radius{-{Cos[u],Sin[u]},{Cos[u],Sin[u]}}]},{u,0,π,angleSteps}],Table[{Gray,Dashed,Circle[{0,0},r]},{r,0,radius,rSteps}]}];

Grid[{{
Column[{Style["Rotate the arrows to trace the graphs:","Subsubsection"],angularSlider[Dynamic[θ1]],angularSlider[Dynamic[θ2]]}],
Dynamic[
Show[{
If[!(θ2==0)||wholeGraph2,
{PolarPlot[Tooltip[function2/.paramSubst],{θ,0,If[wholeGraph2,6π,θ2]},AxesOrigin->{0,0},AspectRatio->1,ImageSize->howBig,PlotStyle->Blue,PlotPoints->ControlActive[40,80]],Graphics[{PointSize[Large],PlotStyle->Blue,Tooltip[Point[{function2 Cos[θ2],function2 Sin[θ2]}/.paramSubst/.θ->θ2],{θ2,{function2 Cos[θ2],function2 Sin[θ2]}/.paramSubst/.θ->θ2}]}]},blankGraph],
If[!(θ1==0)||wholeGraph1,
{PolarPlot[Tooltip[function1/.paramSubst],{θ,0,If[wholeGraph1,6π,θ1]},AxesOrigin->{0,0},AspectRatio->1,ImageSize->howBig,PlotStyle->Red,PlotPoints->ControlActive[40,80]],Graphics[{PointSize[Large],Red,Tooltip[Point[{function1 Cos[θ1],function1 Sin[θ1]}/.paramSubst/.θ->θ1],{θ1,{function1 Cos[θ1],function1 Sin[θ1]}/.paramSubst/.θ->θ1}]}]},blankGraph],
polarGraphPaper[zoomScale[zoomFactor],1,π/6]},
PlotRange->{{-zoomScale[zoomFactor],zoomScale[zoomFactor]},{-zoomScale[zoomFactor],zoomScale[zoomFactor]}}
]]
}}]
],
{{function1,Sin[2θ],"Graph 1 (red): r = "}},
{{function2,Cos[3θ],"Graph 2 (blue): r = "}},Delimiter,
{{zoomFactor,1.2,"Zoom"},6,0.1},
{{wholeGraph1,False,"Show All 1"},{True,False},ControlPlacement->Right},
{{wholeGraph2,False,"Show All 2"},{True,False},ControlPlacement->Right},
Delimiter,
{{paramA,1,"(positive integers) A"},0,50,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramB,1,"(positive/negative integers) B"},-10,10,1,Appearance->"Labeled",ControlPlacement->Bottom},
{{paramC,0,"(reals from -1 to 1) C"},-1,1,Appearance->"Labeled",ControlPlacement->Bottom},
Initialization:>(angularSlider[Dynamic[angle_]]:=DynamicModule[{p={1,0},angleCalc},LocatorPane[Dynamic[p,(angleCalc@@Normalize/@{#,p})&],Graphics[{Circle[],Arrowheads[0.15],Arrow[Dynamic[{{0,0},p}]],Dynamic[Text[Round[100 angle/π]/100. "π",{0,-.25}]]},ImageSize->60],Appearance->None],Initialization:>(angle=0;angleCalc[newp_,oldp_]:=(angle=angle+ArcCos[newp.oldp]Sign[Cross[newp].(newp-oldp)];p={Cos[angle],Sin[angle]}))])
]